<?php
namespace app\admin\controller;
use app\AppApi;
use think\facade\Db;
use think\facade\View;
use think\facade\Cookie;
use think\facade\Config;

use app\admin\model\AdminConfig;

use think\exception\HttpResponseException;
use think\facade\Request;
use think\facade\Route;

class Base
{

        public function  __construct()
        {
            date_default_timezone_set('PRC');
            $aAdminConfig = new AdminConfig();
                $this->config=$aAdminConfig->getALL();
                $this->adminId = Cookie::get('admin_id');
                if (empty($this->adminId))
                {
                    header("Location:".$this->config['admin_route'].'Login/index');
                    exit;
                }
                $this->user = Db::table('admin_user')->where('uid',$this->adminId)->find();
                if (empty($this->user))
                {
                    Cookie::delete('admin_id');
                    $this->error('管理员账户不存在');
                }
                if ($this->user['status'] != 1) {
                    Cookie::delete('admin_id');
                    $this->error('管理员已被禁用');
                }
                # 获取用户组权限
                $group = Db::table('admin_user_group')->where(['group_id'=>$this->user['group_id']])->find();
                if(empty($group)){
                    $this->error('对不起，您没有权限');
                }
                # 获取当前链接，查询是否有权限
                $controller = request()->controller();
                $action = request()->action();
                $key = $controller.'/'.$action;
            if($key == 'Index/index' ||  $key == 'Index/welcome'){

            }else{
                $aMenu = Db::table('admin_sys_menu')->where('src',$key)->find();
                if(empty($aMenu)){
                    $this->error('对不起，您访问的功能不存在');
                }
                $rights = json_decode($group['rights']);
                if(!in_array($aMenu['smid'],$rights)){
                    $this->error('对不起，您没有权限');
                }
            }
            View::assign([
                'user' => $this->user,
                'config' => $this->config
            ]);


        }

    protected function returnCode($code,$data=[],$count=10){
        header('Content-type:application/json');
        if($code == 0){
            $arr = array(
                'code'=>$code,
                'msg'=>'成功',
                'count'=> $count,
                'data' => $data
            );
        }else if($code >= 1 && $code <= 100){
            $arr = array(
                'code'	=>	$code,
                'msg'	=>	$data
            );
        }else{
            $appapi = new AppApi();
            $arr = array(
                'code'=>$code,
                'msg'=>$appapi::errorTip($code)
            );
        }
        echo json_encode($arr);
        if($code != 0){
            exit;
        }
    }



    /**
     * 操作成功跳转的快捷方法
     * @access protected
     * @param  mixed     $msg 提示信息
     * @return void
     */
    protected function success($msg = '')
    {
        $result = [
            'code' => 1,
            'msg'  => $msg
        ];

        $type = $this->getResponseType();
        if ($type == 'html'){
            $response = view(Config::get('app.dispatch_success_tmpl'), $result);
        } else if ($type == 'json') {
            $response = json($result);
        }
        throw new HttpResponseException($response);
    }

    /**
     * 操作错误跳转的快捷方法
     * @access protected
     * @param  mixed     $msg 提示信息
     * @return void
     */
    protected function error($msg = '')
    {
        $result = [
            'code' => 0,
            'msg'  => $msg
        ];
        $response = view(Config::get('app.dispatch_error_tmpl'), $result);
        throw new HttpResponseException($response);
    }

    /**
     * 获取当前的response 输出类型
     * @access protected
     * @return string
     */
    protected function getResponseType()
    {
        return Request::isJson() || Request::isAjax() ? 'json' : 'html';
    }


}